package environment.borders;

import be.kuleuven.cs.som.annotate.*;

/**
 * Een abstracte klasse die een raakbare grens tussen twee vakjes voorstelt.
 * 
 * @author 	Nathan Bekaert & Philippe de Potter de ten Broeck
 * @version 1.0
 */
public abstract class MaterialBorder extends Border {

        
	/**
	* Initialiseert deze nieuwe materiaalgrens met gegeven gladheid.
	* 
	* @param 	isSlippery
	* 			De gladheid voor deze nieuwe materiaalgrens.
	* @post		De gladheid van deze nieuwe materiaalgrens is gelijk aan de gegeven gladheid.
	*    		| new.isSlippery() == isSlippery
	*/
	@Model @Raw
	protected MaterialBorder(boolean isSlippery) {
		this.isSlippery = isSlippery;
	}

	/**
	* Retourneert of deze materiaalgrens al dan niet glad is.
	*/
	@Basic @Immutable @Raw
	public boolean isSlippery() {
		return isSlippery;
	}
        
	/**
	* Variabele die bijhoudt of deze materiaalgrens glad is.
	*/
	private final boolean isSlippery;
	
	/**
	 * Retourneert een textuele weergave van deze materiaalgrens.
	 * 
	 * @return	Een string die o.a. de eigenschappen van deze materiaalgrens als algemene begrenzing weergeeft.
	 * 			| result.contains(super.toString())
	 * @return	De string geeft ook de gladheid van deze materiaalgrens weer.
	 * 			| result.contains(isSlippery())
	 */
	@Override
	public String toString() {
		String returnString = "";
		returnString += super.toString();
		returnString += "\n is slippery: " + isSlippery();
		return returnString;
	}
}